home *** CD-ROM | disk | FTP | other *** search
- CODE SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:CODE,DS:CODE
-
- ENTRY: mov ax, ds ; Blych
- add ax, 10H
- mov ds, ax
-
- mov dx, Offset STARTmsg ; Say HELLO
- mov ah, 9
- int 21H
-
- mov dx, Offset PROGNAME ; Open Opus.Exe
- mov ax, 3d02H
- int 21H
- jc $OPNerr
-
- mov di, ax ; Preserve handle
-
- mov bx, ax ; LSeek
- xor cx, cx
- mov dx, 0c7c0H
- mov ax, 4200H
- int 21H
-
- mov bx, di ; See what's there
- mov cx, 2
- mov dx, Offset BUFFER
- mov ah, 3fH
- int 21H
- jc $RDerr
-
- cmp BUFFER, 04b9H
- jne $DATAerr
-
- mov bx, di ; LSeek
- xor cx, cx
- mov dx, 0c7c0H
- mov ax, 4200H
- int 21H
-
- mov bx, di ; Write new data
- mov cx, 35
- mov dx, Offset PATCH
- mov ah, 40H
- int 21H
- jc $WTerr
-
- mov bx, di ; LSeek
- mov cx, 2
- mov dx, 387eH
- mov ax, 4200H
- int 21H
-
- mov bx, di ; Write new data
- mov cx, 1
- mov dx, Offset NEWVERS
- mov ah, 40H
- int 21H
- jc $WTerr
-
- mov bx, di
- mov ah, 3eH ; Close file
- int 21H
-
- mov dx, Offset DONEmsg ; Say BYE, go back to DOS
- mov ah, 9
- int 21H
- mov ax, 4c00H
- int 21H
-
- $DATAerr:mov dx, Offset DATAmsg
- jmp short $FATAL
-
- $RDerr: mov dx, Offset READmsg
- jmp short $FATAL
-
- $WTerr: mov dx, Offset WRTmsg
- jmp short $FATAL
-
- $OPNerr: mov dx, Offset OPENmsg
- $FATAL: mov ah, 9
- int 21H
- mov ax, 4c01H ; ErrorLevel==1
- int 21H
-
-
-
-
- ;
- ;--- Data
- ;
- STARTmsg db 'OPUS SlimePatch 1$'
- DONEmsg db ', finished.', 0dH, 0aH, '$'
-
- PROGNAME db 'OPUS.EXE', 0
- OPENmsg db 'Can''t open OPUS.EXE$'
- DATAmsg db 'Wrong EXE version$'
- READmsg db 'Can''t read OPUS.EXE$'
- WRTmsg db 'Can''t write OPUS.EXE$'
-
- PATCH db 83H, 46H,0faH, 01H
- db 83H, 56H, 04H, 00H
- db 40 DUP(90H)
- NEWVERS db 'b', 0
-
- BUFFER dw 0
-
-
- CODE ENDS
- END
-
-